/**
 * Programme test de Piece
 *
 * @file testPiece.cxx
 */

// Utile pour l'affichage
#include <iostream>
#include "Piece.h"
#include "JoueurBlanc.h"
#include "Echiquier.h"
#include "JoueurNoir.h"
#include <typeinfo>

using namespace std;


void afficheChoix(int &x, int &y, int &dx, int &dy)
{
    while ((x < 1 || x > 8) || (y < 1 || y > 8))
                {
                    cout << endl << "Veuillez saisir les coordonnees de la piece a deplacer : " << endl;
                    cin >> y >> x;
                }
                while ((dx < 1 || dx > 8) || (dy < 1 || dy > 8))
                {
                     cout << endl << "Veuillez saisir les coordonnees de la destination : " << endl;
                    cin >> dy >> dx;
                }
}

/**
 * Programme principal
 */
int main( int argc, char** argv )
{
    Echiquier test;
    JoueurBlanc j1 ;
    JoueurNoir j2 ;
    bool termine = false;
    bool deplace = false;
    int x ;
    int y ;
    int dx ;
    int dy ;
    int i = -1;
    j1.initPieces();
    j2.initPieces();
    j1.placerPieces(&test);
    j2.placerPieces(&test);

    while(!termine)
    {
        i++;
        cout << i;

        test.affiche();
        if(i%2 == 0)
        {
            while(!deplace)
            {
                x = 0;
                y = 0;
                dx = 0;
                dy = 0;
                cout << endl << endl
                     << "*********** JOUEUR 1 ***********" << endl;
                afficheChoix(x, y, dx, dy);
                deplace = test.deplacer(test.getPiece(x,y),dx,dy);
            }

            Piece* p = test.getPiece(dx,dy);
            Piece* roi = j2.getRoi();

            if(p->mouvementvalide(&test,roi->x(),roi->y()))
                j2.setEstEnEchec(true);
        }
        else
        {
            while(!deplace)
            {
                x = 0;
                y = 0;
                dx = 0;
                dy = 0;
                cout << endl << endl
                     << "*********** Joueur 2 ***********"<< endl;
                afficheChoix(x, y, dx, dy);
                deplace = test.deplacer(test.getPiece(x,y),dx,dy);
            }

            Piece* p = test.getPiece(dx,dy);
            Piece* roi = j1.getRoi();
            if(p->mouvementvalide(&test,roi->x(),roi->y()))
                j1.setEstEnEchec(true);
        }
        deplace = false;
    }


}
